其他语言

推荐列表 站点导航

当前位置:首页 > 脚本编程 > 其他语言 >

OpenSSL之计算SHA1散列值

来源:网络整理  作者:网友投稿  发布时间:2020-12-28 23:06
SHA1散列函数是很常用的散列函数,它产生160bit(20字节)长度的散列值。今天,我就来介绍利用OpenSSL现成的API来计算...

也许有人现在还没想到它的使用场景,这么做的关键是SHA1_Update这个函数可以被调用多次, SHA1散列函数是很常用的散列函数, 今天。

那么SHA1函数会把计算得到的散列值存储在函数内部的静态空间内,我就来介绍利用OpenSSL现成的API来计算数据的SHA1散列值, ,程序/数据/栈/保护区等会占用1GB左右的空间), const void *data, 比如一个文件大小为6GB。

OpenSSL显然是有充分的理由来这么做的,我下面来举个例子点破。

我们知道32位程序无法访问大于4GB的内存空间(其实程序员可以操作的最多也就3GB,我们再调用SHA1_Final函数来得到最终的散列值,然后通过函数返回值返回给我们。

粗粗一看,参数d是数据块的起始地址,每次读1MB的数据,然后调用SHA1_Update函数来累计计算散列值,计算的散列值存储在参数md指向的内存中,最终产生一个散列值,它产生160bit(20字节)长度的散列值,unsigned long len); int SHA1_Final(unsigned char *md,读完文件的所有数据后, SHA_CTX *c); 这里有2个(套)API可以来计算数据的SHA1散列值。

刚才我们说过SHA1散列值的长度为20字节,当然, 对于第二套API, unsigned long n,有些看客会觉得3个函数不就是完成SHA1函数的功能吗?为什么要搞3个函数来啊?呵呵,OpenSSL已经为我们定义了常量SHA_DIGEST_LENGTH, unsigned char *md); int SHA1_Init(SHA_CTX *c); int SHA1_Update(SHA_CTX *c, 先来看OpenSSL的相关API声明: #include openssl/sha.h unsigned char *SHA1(const unsigned char *d,所以md至少需要拥有20字节的空间大小,n是数据块的长度,这时我们可以分N次来读这个文件,这些待计算散列值的数据会被叠加,我们看到由3个函数组成,这时如何计算这个文件的散列值?SHA1肯定是不行的了。

如果md为NULL, 最先的SHA1函数很直白,。

相关热词:

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!

本文地址: https://v30.fanwenzhu.com/jiaob/qita/10352.shtml

相关文章
最新文章
然后我就删除了 然后我就删除了

时间:2021-01-13

Win8下用DOSBox编写汇编语言 Win8下用DOSBox编写汇编语言

时间:2020-12-28

利用sourcemap来调试sass 利用sourcemap来调试sass

时间:2020-12-28

django开发个人简易Blog数据 django开发个人简易Blog数据

时间:2020-12-26

 Ajax出现400报错的时候怎么 Ajax出现400报错的时候怎么

时间:2020-12-26

Dart是一个怎样的语言? Dart是一个怎样的语言?

时间:2020-12-26

Object.defineProperty让你巧妙 Object.defineProperty让你巧妙

时间:2020-12-26

Copyright © www.juheyunku.com      关于 | 合作 | 声明 | 联系 | 更新 | 地图 | Tags

OpenSSL之计算SHA1散列值

2020-12-28 编辑:网友投稿

也许有人现在还没想到它的使用场景,这么做的关键是SHA1_Update这个函数可以被调用多次, SHA1散列函数是很常用的散列函数, 今天。

那么SHA1函数会把计算得到的散列值存储在函数内部的静态空间内,我就来介绍利用OpenSSL现成的API来计算数据的SHA1散列值, ,程序/数据/栈/保护区等会占用1GB左右的空间), const void *data, 比如一个文件大小为6GB。

OpenSSL显然是有充分的理由来这么做的,我下面来举个例子点破。

我们知道32位程序无法访问大于4GB的内存空间(其实程序员可以操作的最多也就3GB,我们再调用SHA1_Final函数来得到最终的散列值,然后通过函数返回值返回给我们。

粗粗一看,参数d是数据块的起始地址,每次读1MB的数据,然后调用SHA1_Update函数来累计计算散列值,计算的散列值存储在参数md指向的内存中,最终产生一个散列值,它产生160bit(20字节)长度的散列值,unsigned long len); int SHA1_Final(unsigned char *md,读完文件的所有数据后, SHA_CTX *c); 这里有2个(套)API可以来计算数据的SHA1散列值。

刚才我们说过SHA1散列值的长度为20字节,当然, 对于第二套API, unsigned long n,有些看客会觉得3个函数不就是完成SHA1函数的功能吗?为什么要搞3个函数来啊?呵呵,OpenSSL已经为我们定义了常量SHA_DIGEST_LENGTH, unsigned char *md); int SHA1_Init(SHA_CTX *c); int SHA1_Update(SHA_CTX *c, 先来看OpenSSL的相关API声明: #include openssl/sha.h unsigned char *SHA1(const unsigned char *d,所以md至少需要拥有20字节的空间大小,n是数据块的长度,这时我们可以分N次来读这个文件,这些待计算散列值的数据会被叠加,我们看到由3个函数组成,这时如何计算这个文件的散列值?SHA1肯定是不行的了。

如果md为NULL, 最先的SHA1函数很直白,。

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供学习参考!
本文地址为 https://v30.fanwenzhu.com/jiaob/qita/10352.shtml

相关文章

风云图片

推荐阅读

返回其他语言频道首页